// 问题一：实现Comparable接口

// 解释：
// compareTo()方法返回值的含义：
// - 负数：当前对象小于比较对象
// - 零：当前对象等于比较对象
// - 正数：当前对象大于比较对象

// 示例：学生成绩比较
class Student implements Comparable<Student> {
  final String name;
  final int score;

  Student(this.name, this.score);

  @override
  int compareTo(Student other) {
    // 按分数从高到低排序
    return other.score - score;
  }

  @override
  String toString() => 'Student(name: $name, score: $score)';
}

void main() {
  // 创建学生列表
  final students = [Student('张三', 85), Student('李四', 92), Student('王五', 78)];

  // 排序前
  print('排序前:');
  students.forEach(print);

  // 排序
  students.sort();

  // 排序后
  print('\n排序后:');
  students.forEach(print);

  // 测试比较结果
  final student1 = Student('测试1', 90);
  final student2 = Student('测试2', 80);

  print('\n比较结果:');
  print(
    'student1.compareTo(student2): ${student1.compareTo(student2)}',
  ); // 输出负数
  print(
    'student2.compareTo(student1): ${student2.compareTo(student1)}',
  ); // 输出正数
  print('student1.compareTo(student1): ${student1.compareTo(student1)}'); // 输出0
}
